Centralized, scalable, resource monitoring system

ABSTRACT

A method, apparatus, and computer program product are disclosed to provide host-independent resource monitoring for distributed networks. The method includes determining, from a set of jobs, one or more jobs to execute that monitor the status of resources within a distributed network. The method determines one or more environments in which to run the one or more jobs, and instantiates the one or more jobs with one or more environment variables for the determined one or more environments such that the one or more jobs are configured for operation in the determined one or more environments. The method accordingly displays, using a graphical user interface, a job environment matrix including a list of the set of jobs in conjunction with a running status of each of the jobs in each of one or more environments. A corresponding apparatus and computer program product are also provided.

TECHNOLOGICAL FIELD

Example embodiments of the present invention relate generally tomonitoring resources in distributed network and, more particularly, to amethod and apparatus for centralized and scalable monitoring of aresource.

BACKGROUND

Applicant has discovered problems with current methods for monitoringremote resources in scalable computer networks. Through applied effort,ingenuity, and innovation, Applicant has solved many of these identifiedproblems by developing a solution that is embodied by the presentinvention, which is described in detail below.

BRIEF SUMMARY

Accordingly, a method, apparatus, and computer program product areprovided that enable host-independent resource monitoring fordistributed networks.

In a first example embodiment, an apparatus is provided. The apparatusmay include a processor and a memory, the memory storing computerprogram code that, when executed by the processor, causes the apparatusto determine, from a set of jobs, one or more jobs to execute, whereinthe one or more jobs are configured to monitor the status of resourceswithin a distributed network. The computer program code, when executedby the processor, further causes the apparatus to determine one or moreenvironments in which to run the one or more jobs, wherein the one ormore environments are defined using one or more environment variables,and instantiate the one or more jobs with the one or more environmentvariables for the determined one or more environments such that the oneor more jobs are configured for operation in the determined one or moreenvironments. In addition, the computer program code, when executed bythe processor, further causes the apparatus to display, using agraphical user interface, a job environment matrix including a list ofthe set of jobs in conjunction with a running status of each of the jobsin each of one or more environments.

In one embodiment, the computer program code, when executed by theprocessor, further causes the apparatus to receive, using the graphicaluser interface, instructions to run, stop, suspend running of, or resumerunning an instance of a job displayed in the job environment matrix inan environment displayed in the job environment matrix, and start, stop,suspend, or resume an instance of the job based on the receivedinstructions.

In another embodiment, the computer program code, when executed by theprocessor, further causes the apparatus to, display, using the graphicaluser interface, a job creation interface, receive, using the graphicaluser interface, abstract job parameters, create a new job based on thereceived abstract job parameters, and store the new job in the memory.In this regard, the abstract job parameters may include an executionschedule of the job and a collector that performs resource monitoringoperations. In one such embodiment, the computer program code, whenexecuted by the processor, further causes the apparatus to, display,using the graphical user interface, a job editing interface, wherein thejob editing interface displays abstract job parameters of a selectedjob, receive, using the graphical user interface, instructions forupdating the abstract job parameters of the selected job, update theselected job based on the received instructions, and store the updatedjob in the memory.

In yet another embodiment, the computer program code, when executed bythe processor, further causes the apparatus to display, using thegraphical user interface, an environment creation interface, receive,using the graphical user interface, an environment variable, create anew environment based on the received environment variable, and storethe new environment in the memory. In this regard, the environmentvariable comprises a network address. In one such embodiment, thecomputer program code, when executed by the processor, further causesthe apparatus to, display, using the graphical user interface, anenvironment editing interface, wherein the environment editing interfacedisplays parameters of a selected environment, receive, using thegraphical user interface, instructions for updating the parameters ofthe selected environment, update the selected environment based on thereceived instructions, and store the updated environment in the memory.

In one embodiment, the computer program code, when executed by theprocessor, further causes the apparatus to display, using the graphicaluser interface, a summary of running jobs in conjunction with a statusof each of the running jobs.

In another embodiment, the memory stores a domain having a list of jobs,a list of environments, and permissions information, wherein thepermissions information indicates a list of users who may access thedomain and access levels of the list of users. In this regard, thecomputer program code, when executed by the processor, further causesthe apparatus to display, using the graphical user interface, a domainediting interface, wherein the domain editing interface displays thelist of jobs and the list of environments of the domain, receive, usingthe graphical user interface, instructions for updating the list of jobsor the list of environments, update the domain based on theinstructions, and store the updated domain in the memory. In anothersuch embodiment, the computer program code, when executed by theprocessor, further causes the apparatus to display, using the graphicaluser interface, a permissions editing interface, wherein the permissionsediting interface displays the list of users who may access the domainand access levels of each user of the list of users, receive, using thegraphical user interface, instructions for updating the list of users orthe access levels of each user of the list of users, update the domainbased on the instructions, and store the updated domain in the memory.

In a second example embodiment, a method is provided. The methodincludes determining, from a set of jobs, one or more jobs to execute,wherein the one or more jobs are configured to monitor the status ofresources within a distributed network. The method further includesdetermining one or more environments in which to run the one or morejobs, wherein the one or more environments are defined using one or moreenvironment variables, and instantiating, using a processor, the one ormore jobs with the one or more environment variables for the determinedone or more environments such that the one or more jobs are configuredfor operation in the determined one or more environments. The methodadditionally includes displaying, using a graphical user interface, ajob environment matrix including a list of the set of jobs inconjunction with a running status of each of the jobs in each of one ormore environments.

In a third example embodiment, a computer program product is provided.The computer program product includes a computer-readable storage mediumstoring computer program code that, when executed by an apparatus,causes the apparatus to determine, from a set of jobs, one or more jobsto execute, wherein the one or more jobs are configured to monitor thestatus of resources within a distributed network. The computer programcode, when executed by the processor, further causes the apparatus todetermine one or more environments in which to run the one or more jobs,wherein the one or more environments are defined using one or moreenvironment variables and instantiate the one or more jobs with the oneor more environment variables for the determined one or moreenvironments such that the one or more jobs are configured for operationin the determined one or more environments. The computer program code,when executed by the processor, also causes the apparatus to display,using a graphical user interface, a job environment matrix including alist of the set of jobs in conjunction with a running status of each ofthe jobs in each of one or more environments.

In a fourth example embodiment, an apparatus is provided. The apparatusincludes means for determining, from a set of jobs, one or more jobs toexecute, wherein the one or more jobs are configured to monitor thestatus of resources within a distributed network. The apparatus furtherincludes means for determining one or more environments in which to runthe one or more jobs, wherein the one or more environments are definedusing one or more environment variables, and means for instantiating,using a processor, the one or more jobs with the one or more environmentvariables for the determined one or more environments such that the oneor more jobs are configured for operation in the determined one or moreenvironments. The apparatus additionally includes means for displaying,using a graphical user interface, a job environment matrix including alist of the set of jobs in conjunction with a running status of each ofthe jobs in each of one or more environments.

The above summary is provided merely for purposes of summarizing someexample embodiments to provide a basic understanding of some aspects ofthe invention. Accordingly, it will be appreciated that theabove-described embodiments are merely examples and should not beconstrued to narrow the scope or spirit of the invention in any way. Itwill be appreciated that the scope of the invention encompasses manypotential embodiments in addition to those here summarized, some ofwhich will be further described below.

BRIEF DESCRIPTION OF THE DRAWINGS

Having thus described certain example embodiments of the presentdisclosure in general terms, reference will now be made to theaccompanying drawings, which are not necessarily drawn to scale, andwherein:

FIG. 1 illustrates an example system within which embodiments of thepresent invention may operate;

FIG. 2 illustrates a block diagram showing an example system, inaccordance with some example embodiments of the present invention;

FIG. 3 shows a block diagram of an apparatus that may be specificallyconfigured in accordance with an example embodiment of the presentinvention;

FIG. 4 illustrates a flowchart describing example operations formanaging one or more monitoring jobs in a distributed network inaccordance with some example embodiments;

FIG. 5 illustrates an example job environment matrix in accordance withsome example embodiments;

FIG. 6 illustrates a flowchart describing example operations forreceiving monitoring instructions using a web user interface inaccordance with some example embodiments;

FIGS. 7a and 7b illustrate flowcharts describing example operations forcreating and editing jobs, in accordance with some example embodiments;

FIG. 8 illustrates a job details interface in accordance with someexample embodiments;

FIGS. 9a and 9b illustrate flowcharts describing example operations forcreating and editing environments, in accordance with some exampleembodiments;

FIG. 10 illustrates an environment editing interface in accordance withsome example embodiments;

FIG. 11 illustrates an example dashboard overview in accordance withsome example embodiments;

FIG. 12 illustrates a data model of one example domain in accordancewith some example embodiments;

FIGS. 13a and 13b illustrate flowcharts describing example operationsfor editing attributes of a domain in accordance with some exampleembodiments;

FIG. 14 illustrates a flowchart describing example operations formanaging one or more monitoring jobs in a distributed network from theperspective of a host in accordance with some example embodiments; and

FIG. 15 illustrates a flowchart describing example operations formanaging one or more monitoring jobs from the perspective of a collectorwithin a resource environment in accordance with some exampleembodiments.

DETAILED DESCRIPTION

Some embodiments of the present invention will now be described morefully hereinafter with reference to the accompanying drawings, in whichsome, but not all embodiments of the inventions are shown. Indeed, theseinventions may be embodied in many different forms and should not beconstrued as limited to the embodiments set forth herein; rather, theseembodiments are provided so that this disclosure will satisfy applicablelegal requirements. Like numbers refer to like elements throughout.

As used herein, the terms “data,” “content,” “information,” and similarterms may be used interchangeably to refer to data capable of beingtransmitted, received, and/or stored in accordance with embodiments ofthe present invention. Thus, use of any such terms should not be takento limit the spirit and scope of embodiments of the present invention.Further, where a computing device is described herein to receive datafrom another computing device, it will be appreciated that the data maybe received directly from the another computing device or may bereceived indirectly via one or more intermediary computing devices, suchas, for example, one or more servers, relays, routers, network accesspoints, base stations, hosts, and/or the like, sometimes referred toherein as a “network.” Similarly, where a computing device is describedherein to send data to another computing device, it will be appreciatedthat the data may be sent directly to the another computing device ormay be sent indirectly via one or more intermediary computing devices,such as, for example, one or more servers, relays, routers, networkaccess points, base stations, hosts, and/or the like.

Overview

A method, apparatus, and computer program product are provided inaccordance with an example embodiment of the present invention in orderto facilitate improved resource monitoring in a scalable computingenvironment.

Historically, a common issue in deploying infrastructure capacity tosupport a computer-based application is that the infrastructurenecessary to ensure operation and stability of the application is notstatic, but can vary significantly; during times of peak user traffic,the required capacity can be significantly higher than during times oflow user traffic. However, deploying infrastructure sufficient to handlethe peak user traffic creates some degree of waste, as some amount ofinfrastructure may sit idle during non-peak time periods. Alternatively,deploying any capacity less than this amount may result in a poor userexperience during peak user traffic. Accordingly, to eliminate thispotential for waste and/or insufficient infrastructure capacity,computer infrastructure is often scalable, such that the number of hostscan be changed dynamically to address user traffic load in real-time. Inthis regard, a host may comprise a computing system in a computingnetwork that is configured to perform network control functions and toprovide computational and/or database access to one or more computingsystems or users in the computing network.

As a side effect, however, introducing scalability into a computingenvironment may add complexity to resource monitoring. A resource maycomprise any data processing component that may perform a job or task,and may include, but not limited to, databases, other types of storage,input/output devices, processing units, data files, and programs.Resources may often be monitored for availability, databaseconnectivity, connection time, service availability, response time,order drops, or service calls returning unexpected values (e.g., SELECTCOUNT(*) FROM business_objects WHERE state=′stuck′ returns non-zero).Typically, resource monitors run in the computer infrastructure on hoststhat create the connection between users and a resource (e.g., adatabase). In a scalable environment, though, a resource monitor mayonly be operational when residing on an actively employed host, so theremay be low traffic situations when a given host is not used, andtherefore when the resource monitor residing on that host is notoperating. To surmount this problem, resource monitors may be installedon every possible host in the scalable system, but another problem iscreated in this instance: when resource monitors reside on everypossible host, then the resource monitors themselves may burden thesystem with duplicative operations.

To surmount this duplicative monitoring problem, resource monitors mayrun on every host, but with additional software establishing a leaderelection between the active hosts. Using leader election software, eachof the active hosts may communicate with each other to determine whichhost will monitor a particular resource at a given time. However,although developing software to perform leader election among activehosts may be possible, it would require robust communication between thevarious hosts, and therefore the software must be developed specificallyfor each set of hosts in which the leader election software would run.Accordingly, even if this is technically possible, because leaderelection would need to be specifically implemented for each set ofhosts, leader election may not be practical for large-scaleimplementations in which there are many separate sets of hosts. Insteadof patching a system with one script after another, it makes sense for asolution generated independently from any particular implementation orworkflow to be monitored. Thus, another solution is required that avoidsthe need to develop leader election software and which allows user tocontinue to add monitors via a web user interface.

As a system grows, it becomes important for engineers to be able toeasily define monitoring jobs (e.g., a SQL query or the like) and runthem with specified schedules, collect results, create alarms, and allwithout the burden of specifically coding, building or deployingdistinct software implementations. It's also important for a system toexecute monitor jobs based on a strictly defined schedule regardless ofhow the system scales up and down.

Embodiments of the present invention provide a centralized monitoringsystem that implements monitors and alarms around shared resources suchas databases and related services by repeatedly running user-definedjobs. In this regard, rather than having resource monitors running onone or more hosts in the scalable network and pushing data to anend-user responsible for resource management, in some exampleembodiments of the present invention, a resource monitor may resideoutside of the hosts, and may be developed to pull relevant informationfrom the resource itself via the set of hosts. As described in greaterdetail below, resources may be thus be monitored without considerationof the scalability of the network, the number of hosts, or any otherissues related to the specific computer infrastructure using which theresource is accessed.

System Architecture

The method, apparatus, and computer program product of the presentinvention may be embodied by any of a variety of devices. For example,the method, apparatus, and computer program product of an exampleembodiment may be embodied by a networked device, such as a server orother network entity, configured to communicate with one or moredevices, such as one or more client devices. Additionally oralternatively, the computing device may include fixed computing devices,such as a personal computer or a computer workstation. Still further, anexample embodiment may be embodied by any of a variety of mobileterminals, such as a portable digital assistant (PDA), mobile telephone,smartphone, laptop computer, tablet computer, or any combination of theaforementioned devices.

In this regard, FIG. 1 discloses an example computing system withinwhich embodiments of the present invention may operate. Users may accessan environment 108 (which may include cloud resources 110, data storageresources 112, and/or other dependencies 114) from the Internet 102 (oranother computational network) via computer infrastructure 104 (i.e.,middleware). As noted, an environment 108 may include components, butmay further be understood as having a distinct network address reachablefrom the Internet 102. Furthermore, infrastructure 104 may comprise asingle host system, multiple hosts, or may be a scalable infrastructurethat could comprise a variable number of hosts 106. As described above,traditional resource monitoring applications are stored on and run fromthis computer infrastructure 104.

By contrast, embodiments of the present invention may run outside of thescalable elements of a system, such as, for example, on an end-userdevice. FIG. 2 illustrates this fact with a block diagram showinganother example system of the present invention. As can be seen, aninterface 202 (e.g., a web user interface, a mobile application, aclient device, a kiosk, etc.) comprises the resource monitoringapplication that a user may use to enable host-independent monitoring ofa scalable computer network. The interface 202 is configured to enable auser may use to create jobs, environments, define execution schedules,and start, stop, suspend, or resume individual job instances.

As further shown in FIG. 2, the interface 202 is in data communicationwith computer infrastructure 104 (i.e., middleware) including one ormore hosts 106. In this example, the hosts 106 may comprise one or moreRESTful service hosts (e.g., implemented using HTML and representationalstate transfer (REST) principles) and one or more workflow engine hosts,as well as specific resources, such as data store 204. In some examples,the RESTful service is the component that handles user traffic from theinterface 202 (and potentially other systems that integrate with thesystem), and automatically scales based on the number of usersinteracting with computer infrastructure 104. The RESTful service, insome such examples, is configured to call or otherwise access remoteresources like data store 204 and the one or more workflow engine hosts.In one example, the RESTful service is implemented using a JAXRS (JavaAPI for RESTful services) interface, wherein the JAXRS interface may beshared between the interface 202, the RESTful service and other elementsthat may integrate with the system. The workflow engine includesdecision workers and activity workers that call the workflow engine andperform actions against the system database. The workflow engine hostsoutput job results into a log file which eventually is displayed as agraph. The workflow engine is the component of computer infrastructure104 that handles backend requests and, accordingly, automatically scalesnot based on user requests, but based upon the number of jobs to beperformed (e.g., CPU usage). In some embodiments, the interface 202, theRESTful service and the workflow engine may reside in a single Javavirtual machine (JVM). Of course, in other embodiments, the computerinfrastructure middleware 104 may be implemented using other technologyand may or may not be scalable. One benefit of embodiments of thepresent invention is that no specific computer middleware infrastructureis required to monitor resources.

When a resource monitoring job is instantiated by the interface 202(e.g., such as is described below in connection with FIG. 4), a resourcemonitoring request is communicated to computer infrastructure 104according to an execution schedule (e.g., every 5 minutes) and managedin conjunction with other pending requests according to a workflow 206that organizes processing resources in a distributed network. In thisregard, individual requests are passed to a collector 208 in anenvironment 108 (and there is a one to one correspondence between eachjob instance and a particular collector 208). Of course, there may be adifferent environment 108 for each resource that is monitored. For eachsuch resource being monitored, the respective collector 208 gathersrelevant resource information from the resource (e.g., system tomonitor) 210. Subsequently, the gathered information is returned via thecomputer infrastructure 104 for eventual presentation to the user viainterface 202. Of course, to properly enable monitoring of resources,each environment 108 may be configured to store source code enablingoperation of respective collector 208.

Regardless of the type of device within which the interface 202 resides,an apparatus 300 that may be specifically configured to facilitateimproved resource monitoring in a scalable computing environment inaccordance with an example embodiment of the present invention isillustrated in FIG. 3. It should be noted that while FIG. 3 illustratesone example configuration of an apparatus that may run the interface202, numerous other configurations may also be used to implementembodiments of the present invention (for instance, in examplesdescribed herein, the apparatus 300 may show an example configuration ofa host within computer infrastructure 104 or a collector within anenvironment 108). As such, in some embodiments, although elements areshown as being in communication with each other, hereinafter suchelements should be considered to be capable of being embodied within thesame device or within separate devices.

Referring now to FIG. 3, the apparatus 300 may include or otherwise bein communication with a processor 304, a memory 308, a communicationinterface 306, and a user interface 302. In some embodiments, theprocessor (and/or co-processor or any other processing circuitryassisting or otherwise associated with the processor) may be incommunication with the memory device via a bus for passing informationamong components of the apparatus. The memory 308 may be non-transitoryand may include, for example, one or more volatile and/or non-volatilememories. In other words, for example, the memory may be an electronicstorage device (e.g., a computer readable storage medium). The memorymay be configured to store information, data, content, applications,instructions, or the like, for enabling the apparatus to carry outvarious functions in accordance with an example embodiment of thepresent invention.

The processor 304 may be embodied in a number of different ways and may,for example include one or more processing devices configured to performindependently. Additionally or alternatively, the processor may includeone or more processors configured in tandem via a bus to enableindependent execution of instructions, pipelining, and/ormultithreading.

In an example embodiment, the processor 304 may be configured to executeinstructions stored in the memory 308 or otherwise accessible to theprocessor. Alternatively or additionally, the processor may beconfigured to execute hard-coded functionality. As such, whetherconfigured by hardware or software methods, or by a combination thereof,the processor may represent an entity (e.g., physically embodied incircuitry) capable of performing operations according to an embodimentof the present invention while configured accordingly. Alternatively, asanother example, when the processor is embodied as an executor ofsoftware instructions, the instructions may specifically configure theprocessor to perform the algorithms and/or operations described hereinwhen the instructions are executed.

Meanwhile, the communication interface 306 may be any means such as adevice or circuitry embodied in either hardware or a combination ofhardware and software that is configured to receive and/or transmit datafrom/to a network and/or any other device or module in communicationwith the apparatus 300. In this regard, the communication interface mayinclude, for example, an antenna (or multiple antennas) and supportinghardware and/or software for enabling communications with a wirelesscommunication network. Additionally or alternatively, the communicationinterface may include the circuitry for interacting with the antenna(s)to cause transmission of signals via the antenna(s) or to handle receiptof signals received via the antenna(s). In some environments, thecommunication interface may additionally or alternatively support wiredcommunication. As such, for example, the communication interface mayinclude a communication modem and/or other hardware/software forsupporting communication via cable, digital subscriber line (DSL),universal serial bus (USB), or other mechanisms.

In some embodiments, the apparatus 300 may include a user interface 302that may, in turn, be in communication with processor 304 to provideoutput to the user and, in some embodiments, to receive an indication ofa user input. As such, the user interface may include a display and, insome embodiments, may also include a keyboard, a mouse, a joystick, atouch screen, touch areas, soft keys, a microphone, a speaker, or otherinput/output mechanisms. The processor and/or user interface circuitrycomprising the processor may be configured to control one or morefunctions of one or more user interface elements through computerprogram instructions (e.g., software and/or firmware) stored on a memoryaccessible to the processor (e.g., memory 308, and/or the like).

Job Abstraction

One aspect that in some examples enables greater practicality ofembodiments of the present invention is the concept of job abstraction.A job defines the action to be performed and an execution schedule tomonitor a resource. In a job, the execution schedule defines when thejob runs and the collector defines what action a job performs. Asabstracted, when a job is defined, it can be defined with a ${variable}expression which will later be replaced by environment variable valuesdefined in environments at the time the job runs. By generalizing thedefinition of a monitoring job, instances of the job can be quicklycreated and deployed to a variety of resource environments so that auser is spared the cumbersome process of manually coding each desiredjob. In this regard, while an abstraction may be referred to as a job, ajob instance is an actual implementation of a job running in aparticular environment.

In this respect, an environment is the context in which a job runs. Anenvironment can define one or more environment variables (e.g., hostname or IP address of a database, URL fragment or the like) that can beused in conjunction with the job definition to create a job instancethat runs in the environment. Upon creation of a domain, a “Production”environment is additionally created by default. If a job definitioncontains the expression ${variableName}, the expression will be replacedby variable values defined in the environment within which the job isintended to run. In some examples, if a job requires a set of variables,it can only run in an environment that defines all of the requiredvariables. Accordingly, using job abstractions in conjunction withenvironment variables helps user define a set of jobs and run them inmultiple environments, such as user acceptance testing (UAT) and/orproduction environments.

Accordingly, a user may turn on and off, or suspend or resume a jobinstance via an interface, such as interface 202. In an instance inwhich a job instance is started, the computer infrastructure 104 maybegin a workflow execution for the job that continues until the jobinstance is stopped. For example, although traditional resourcemonitoring software must be designed from the ground up for eachresource to be monitored, once an abstraction of a resource is createdusing embodiments of the present invention, each implementation of theabstraction merely requires its combination with environment-specificvariables to create an instance of the job that will monitor a specificresource.

Interface Operations

Embodiments of the present invention may be implemented using interface202, which, as previously described, may in one example embodimentcomprise a web user interface. In this regard, the interface 202 mayinclude a graphical user interface that enables a user, anothercomputing device connected to the interface 202, or the like, to createmonitoring jobs and environments within which to run, visually identifycreated jobs and see their running states in a variety of environments,and may also enable a user to, in substantially real-time, start,suspend, resume, or stop an instance of a job. Moreover, the interface202 allows or otherwise enables the creation and editing of domains thatidentify covered jobs and environments, define an authorized list ofusers who have access to the covered jobs and environments, andestablishes specific access rights for each authorized user.

Accordingly, FIG. 4 illustrates a flowchart containing exampleoperations for managing one or more monitoring jobs in a distributednetwork. The operations illustrated in FIG. 4 may, for example, beperformed by, with the assistance of, and/or under the control of one ormore of apparatus 300, and may use processor 304, memory 308, userinterface 302, and communications interface 306. In operation 402,apparatus 300 includes means, such as user interface 302, processor 304or the like, for determining one or more jobs to execute. In thisregard, the determination of jobs to execute may be made based on anexecution schedule for each specific job. However, as detailed below,the determination of jobs to execute may be made by a user via a userinterface 302 by manipulating the interface 202.

In operation 404, the apparatus 300 further includes means, such as userinterface 302, processor 304, communications interface 306, memory 308,or the like, for determining one or more environments in which to runthe one or more jobs. As with the determination of jobs to execute, thedetermination of environments may be made based on an execution schedulefor each specific job or by a user via a user interface 302.

In operation 406, the apparatus 300 may include means, such as processor304, communications interface 306, or the like, for instantiating theone or more jobs with the one or more environment variables. Becauseeach job comprises an abstraction that requires specific environmentvariables for execution, instantiation of a job includes identification,by the apparatus 300, of environment variables necessary for executionof an instance of the job. Moreover, upon instantiating a job, theapparatus 300 may further include means, such as communicationsinterface 306 or the like, for communicating with, via the scalablecomputer infrastructure, the resource identified by the job. In thisregard, a resource monitor may run an SQL SELECT query against adatabase every 5 minutes and trigger an alarm when a predefinedthreshold is breached, may call a workflow service every 5 minutes toquery the number of backlog and accordingly trigger an alarm when thebacklog size breaches the threshold, or may call a workflow serviceevery 5 minutes to query the number of workflow executions of giventype. Alternatively, a resource monitor may be called to perform mathcalculations of multiple other job results, such as calculating workflowexecution number minus the result of a SELECT query, or trigger an alarmwhen the result breaches the threshold. Furthermore, result informationreceived as a result of running a job instance may be communicated backvia the computer infrastructure 104 and interface 202. In one suchembodiment, the method of communication upon receipt of the resultinformation by interface 202 may be configurable. In one example, usersmay wish to receive all result information updates via designatedcommunication format (e.g., email message, text message, etc.). In onesuch example, users may elect to only receive notifications upon athreshold breach. For example, for the SQL query SELECT COUNT(*) FROMtransactions WHERE status=‘stuck’, a user may receive an email messagein an instance the query returns a value greater than zero.

In operation 408, the apparatus 300 may include means, such as userinterface 302, communications interface 306, or the like, for displayinga job environment matrix including a list of the set of jobs inconjunction with a running status of each of the jobs in each of the oneor more environments. In this regard, as previously described, the userdefines jobs and environments, where a job can be defined with $expressions and an environment defines the value of the environmentvariables that will be automatically inserted in place of the $expressions. At runtime, a combination of job/environment constituteactual job instance to run.

For example, a CountStuckTransactions SQL job may be defined as:

Database URL: jdbc:mysql://${databasehost}/transactiondb

Database Login: dbuser/dbpassword

Connection timeout: 500 ms

Query timeout: 200 ms

SQL query: SELECT COUNT(*) FROM transactions WHERE status&stucle

Execution Schedule: Every 10 minutes

In this example, the environment “PROD” is defined with variable:databasehost=actual-prod-database.groupondev.com and the environment“UAT” is defined with variable:databasehost=actual-uat-database.groupondev.com.

Accordingly, a generic interface 202 accordingly may display a jobenvironment matrix, such as shown in Table 1.

TABLE 1 Job PROD UAT CountStuckTransactions Turn On/Off Turn On/OffAnotherJob Turn On/Off Turn On/Off

When a job instance is turned on from control panel, the system combinesthe job and environment into a workflow execution instance with all $expressions replaced by variables in the relevant environment.

By way of further example, a user may want to run a SQL query like“SELECT COUNT(*) FROM my_objects WHERE state=‘BAD’” to monitor a numberof database objects in nonfunctioning state. Such a job may be definedas a SQL query and may be intended to be run in a testing database andproduction database. In order to enable the job to run in the testingand execution environment, a user may define two environments bydefining a variable “databaseHostName” and define one job wheredatabaseHostName=“${databaseHostName}”. In this example, the environmentvariable may be host name or IP address of the database that is to bemonitored.

By way of further example, a user may monitor the state of a service bycausing a HTTP GET call to http://my-service-test.com/serviceState andhttp://my-service-prod.com/serviceState. To define a single job, theuser may set the URL of the service tohttp://my-service-${stage}.com/serviceState in the job definition, anddefine two environments, testing and production, each of which definesvariable “stage”. In this example, the environment variable may take theform of a fragment of URL.

FIG. 5 illustrates another example job environment matrix, in whichcolumn 502 shows an example list of jobs and column 504 shows an exampleenvironment (in this case, a production environment). For each job 506,the job environment matrix illustrates the name of the job, iconsenabling deletion of the job from the matrix (508) and editing of thejob (510), a status of the job in each environment, icons enabling theuser to start an instance of the job in a specific environment (512),suspend a running instance of the job (514), resume running a job (notshown), or stop an instance of the job in a specific environment (516).When an instance of a job cannot be started in a specific environment,an icon 518 may be presented indicating that a problem exists. In thisregard, potential problems may indicate incorrect or missing environmentvariables or an error in the abstract job parameters used to create thejob in the first place. For each environment, an icon 520 enablesediting of the environment.

Based on user icon selection, the job environment matrix may be used toissue resource monitoring commands, as shown in FIG. 6. In this regard,in operation 602 the apparatus 300 may include means, such as userinterface 302, communications interface 306, or the like, for receiving,using the graphical user interface, instructions to run, stop, suspendrunning of, or resume running an instance of a job displayed in the jobenvironment matrix in an environment displayed in the job environmentmatrix. In accordance with this instruction, in operation 604 theapparatus 300 may further include means, such as processor 304,communications interface 306, or the like, for starting, stopping,suspending, or resuming the instance of the job based on the receivedinstructions.

Of course, the graphical user interface may present other interactivecapabilities as well. In one embodiment shown in FIG. 7a , embodimentsof the present invention enable creation of a new job. For instance, inoperation 702 the apparatus 300 may include means, such as userinterface 302 or the like, for displaying, using the graphical userinterface, a job creation interface. In operation 704, the apparatus 300may further include means, such as user interface 302 or the like, forreceiving, using the graphical user interface, abstract job parameters.In this regard, the abstract job parameters may include an executionschedule of the job and information defining the collector that performsthe previously described resource monitoring operations. In operation706, the apparatus 300 may further include means, such as processor 304or the like, for creating a new job based on the received abstract jobparameters. The apparatus 300 may further include means, such as memory308 or the like, for storing the new job.

Similarly, as shown in FIG. 7b , the graphical user interface may enablea user to edit an already-created job. The apparatus 300 may includemeans, such as user interface 302 or the like, for displaying, using thegraphical user interface, a job details interface, such as that shown inFIG. 8. As illustrated in FIG. 8, the job details interface displays theabstract job parameters of a selected job. The apparatus 300 may furtherinclude means, such as user interface 302 or the like, for receiving,using the graphical user interface, selection of icon 510 to edit a job,or selection of a link on the job details interface. Accordingly,referring now to FIG. 7b , in operation 708 the apparatus 300 mayinclude means, such as user interface 302 or the like, for displaying,using the graphical user interface, a job editing interface, wherein thejob editing interface displays abstract job parameters of a selectedjob.

After displaying the job editing interface, in operation 710 theapparatus 300 may further include means, such as user interface 302 orthe like, for receiving, using the graphical user interface,instructions for updating the abstract job parameters of the selectedjob. Finally, in operation 712, the apparatus 300 may further includemeans, such as processor 304 or the like, for updating the selected jobbased on the received instructions. Finally, the apparatus 300 mayfurther include means, such as memory 308 or the like, for storing theupdated job.

In addition to creating and editing a job, however, the interface 202enables creation and editing of specific environments in which the usermay wish to execute an instance of the job, as shown in FIGS. 9a and 9b. For instance, as shown in operation 902 of FIG. 9a , the apparatus 300may include means, such as user interface 302 or the like, fordisplaying, using the graphical user interface, an environment creationinterface. In operation 904, the apparatus 300 may further includemeans, such as user interface 302 or the like, for receiving, using thegraphical user interface, one or more environment variables. In thisregard, environment variables may be network addresses of resources tobe monitored, or may be any other information that may be unique to aparticular environment. In operation 906, the apparatus 300 may furtherinclude means, such as processor 304 or the like, for creating a newenvironment based on the received one or more environment variables. Theapparatus 300 may further include means, such as memory 308 or the like,for storing the new environment.

In a similar fashion as editing of created jobs, the graphical userinterface may enable a user to edit a created environment. In thisregard, the apparatus 300 may include means, such as user interface 302or the like, for displaying, using the graphical user interface, anenvironment details interface, that shows the parameters of a selectedenvironment. The apparatus 300 may further include means, such as userinterface 302 or the like, for receiving, using the graphical userinterface, selection of icon 520 to edit an environment, or selection ofa link on the environment details interface. Accordingly, referring nowto FIG. 9b , in operation 809 the apparatus 300 may include means, suchas user interface 302 or the like, for displaying, using the graphicaluser interface, an environment editing interface, wherein theenvironment editing interface displays parameters of the selected job.FIG. 10 illustrates one such example display.

After displaying the environment editing interface, in operation 910,the apparatus 300 may further include means, such as user interface 302or the like, for receiving, using the graphical user interface,instructions for updating the parameters of the selected environment. Inoperation 912, the apparatus 300 may further include means, such asprocessor 304 or the like, for updating the selected environment basedon the received instructions. In this regard, the apparatus 300 maystore the updated environment in memory 308.

Additionally, the interface 202 may enable a user to view a “Dashboard”overview of the resource monitoring jobs. In this regard, the apparatus300 may include means, such as user interface 302 or the like, fordisplaying, using the graphical user interface, a summary of runningjobs in conjunction with a status of each of the running jobs. In thisregard, FIG. 11 discloses one example dashboard overview, whichdiscloses each running job, the number of retrieved monitoring resultscollected for each job, information regarding the schedule for eachrunning job, and descriptive information for each listed environment andeach listed job.

Embodiments of the present invention further enable the use of “domains”that comprises a model of a team, an organization, an entity under whichjobs are grouped and accessed with the same access control list (ACL).Accordingly, domains enable the separation of one set of jobs fromanother based on a predetermined grouping. In this regard, in eachdomain, multiple jobs, multiple environments, and a user list aredefined. Depending on a user's role, users in the user list may modifyenvironments or jobs in the domain, may modify the domain itself, or maysee the passwords and variables in the domain. Within the context of asingle company implementing the present invention, every employee in thecompany may have read-only access to all domains, but not every employeecan see variable values or database passwords in a specific domainwithout membership in that domain.

In this regard, the apparatus 300 may include means, such as memory 308or the like, for storing a domain having a list of jobs, a list ofenvironments, and permissions information. In some example embodiments,the permissions information indicates a list of users who may access thedomain and access levels of the list of users. FIG. 12 shows a datamodel of one example domain. Each table in FIG. 12 illustrates adiscrete element of the domain having the listed set of attributes. Forinstance, item 1202 indicates the domain element itself, with attributesdefining an ID, a name, a description, relevant owner information, and aversion. Item 1204 indicates the attributes of any given domain user.Item 1206 indicates the attributes of an environment within a domain,and item 1208 contains environment variables for environment 1206.Similarly, item 1210 indicates a particular job and associatedattributes, while items 1212 and 1214 indicate collector information forthat particular job. Finally, item 1216 indicates an instance of a job1210 running in environment 1206, along with its associated attributes.

The interface 202 may enable a user to update the jobs and/orenvironments in a given domain, as shown in FIG. 13a . For instance, inoperation 1302 the apparatus 300 may include means, such as userinterface 302 or the like, for displaying, using the graphical userinterface, a domain editing interface, wherein the domain editinginterface displays the list of jobs and the list of environments of thedomain. In operation 1304, the apparatus 300 may further include means,such as user interface 302 or the like, for receiving, using thegraphical user interface, instructions for updating the list of jobs orthe list of environments. Accordingly, the apparatus 300 thus includemeans, such as processor 304 or the like, for updating the domain basedon the instructions. Finally, in operation 1306, the apparatus 300 mayinclude means, such as memory 308, for storing the updated domain.

Similarly, the interface 202 may enable a user to update the permissionsinformation in a given domain, as shown in FIG. 13b . In this regard, inoperation 1308, the apparatus 300 may include means, such as userinterface 302 or the like, for displaying, using the graphical userinterface, a permissions editing interface, wherein the permissionsediting interface displays the list of users who may access the domainand access levels of each user of the list of users. In operation 1310,the apparatus 300 may further include means, such as user interface 302or the like, for receiving, using the graphical user interface,instructions for updating the list of users and/or the access levels ofeach user of the list of users. Subsequently, in operation 1312, theapparatus 300 thus include means, such as processor 304 or the like, forupdating the domain based on the instructions, and means, such as memory308, for storing the updated domain.

Host Operations

FIG. 14 illustrates a flowchart containing example operations formanaging a monitoring job from the perspective of computerinfrastructure 104 (e.g., one or more hosts 106 within the computerinfrastructure 104). The operations illustrated in FIG. 14 may, forexample, be performed by, with the assistance of, and/or under thecontrol of one or more of a device, such as apparatus 300, and may useprocessor 304, memory 308, user interface 302, and communicationsinterface 306. In operation 1402, apparatus 300 includes means, such ascommunication interface 306 or the like, for receiving a communication,created by a job instance, from an interface 202. In this regard, a jobinstance is created in response to user input via a job environmentmatrix displayed by the interface 202.

In operation 1404, the apparatus 300 further includes means, such asprocessor 304 or the like, for determining an environment to which totransmit a query based on the received communication. The determinationof the environment may be made based on the environment variablesincluded in the job instance.

In operation 1406, the apparatus 300 may include means, such ascommunications interface 306 or the like, for transmitting a resourcequery to a collector located in the determined environment. Similarly,in operation 1408, the apparatus 300 may include means, such ascommunications interface 306 or the like, for receiving resultinformation from the collector. As shown in FIG. 14, these operationsmay cycle indefinitely until suspension or stoppage of the correspondingjob instance.

Finally, in operation 1410, the apparatus 300 may include means, such ascommunications interface 306, memory 308, or the like, for storing theresult information (in memory 308 or data storage 204), such that it isavailable for later communication by the interface 202.

Collector Operations

FIG. 15 illustrates a flowchart containing example operations formanaging a monitoring job from the perspective of a collector residingin a particular environment having one or more resources. The operationsillustrated in FIG. 15 may, for example, be performed by, with theassistance of, and/or under the control of one or more of a device, suchas apparatus 300, and may use processor 304, memory 308, user interface302, and communications interface 306. In operation 1502, apparatus 300includes means, such as communication interface 306 or the like, forreceiving a resource query from an interface 202 via computerinfrastructure. In this regard, the resource query is created by a jobinstantiated using the interface 202.

In operation 1504, the apparatus 300 may include means, such ascommunications interface 306 or the like, for querying resourceidentified in the resource query. Similarly, in operation 1506, theapparatus 300 may include means, such as communications interface 306 orthe like, for receiving result information from the resource.

Finally, in operation 1508, the apparatus 300 may include means, such ascommunications interface 306 or the like, for transmitting the resultinformation to the computer infrastructure.

EXAMPLE Database Service Availability Monitoring

Consider the example of a promotion and marketing service that presents,via its website, promotions redeemable at merchant establishmentsthroughout the world. In this example, the website of the promotion andmarketing service may, based on user traffic, access the promotiondatabase resources. However, because the promotion and marketing serviceoperates worldwide, there are promotion database resources located in avariable of jurisdictions that scale on a constant basis. Furthermore,loss of access to the database would certainly cause economic harm dueto the loss of potential revenue from users visiting the companywebsite. Accordingly, the promotion and marketing service develops a jobto monitor the service availability of a database, and intends to deployit to monitor each of the promotion databases it operates around theworld.

As previously discussed, this process would historically have requiredthe individual development of a resource monitor for each of the variouspromotion databases, which would accordingly have to be tailored morespecifically for each specific deployment. However, using an embodimentof the present invention, the promotion and marketing service creates ajob for monitoring a database, and creates environments with environmentvariables specifying the specific network address of each database to bemonitored.

Accordingly, using interface 202, an operator (such as a user or a localcomputing device) starts, using a job environment matrix of theinterface 202, instances of the created job to monitor all of thepromotion databases globally. Starting each job instance causes acommunication to be transmitted, via computer infrastructure 104, to arespective collector within the corresponding environment. The collectorqueries the promotion database in the environment for service status,and transmits results of the query to the interface 202 via the computerinfrastructure 104. Based on a predefined execution schedule, the job isable to periodically query the promotion database and ensure itscontinued service availability, or alternatively quickly identify aproblem. Accordingly, using an embodiment of the present invention, thepromotion and marketing service is able to efficiently and effectivelymonitor promotion databases in a distributed network.

As described above, certain example embodiments of the present inventionmay provide host-independent resource monitoring for distributednetworks. Using embodiments of the present invention, resource monitorscan be implemented in a variety of computing environments by definingparticular environment variables using which the instantiate generalizedmonitoring jobs. Moreover, users can intuitively control a variety ofjobs in a variety of environments using an intuitive graphical userinterface, as described above. As a result, resource monitors can bequickly and efficiently employed in a variety of computer environments.

As will be appreciated, computer program code and/or other instructionsmay be loaded onto a computer, processor or other programmableapparatus's circuitry to produce a machine, such that execution of thecode on the machine by the computer, processor, or other circuitrycreates the means for implementing various functions, including thosedescribed herein.

As described above and as will be appreciated based on this disclosure,embodiments of the present invention may be configured as methods,mobile devices, backend network devices, and the like. Accordingly,embodiments may comprise various means including entirely of hardware ora combination of software and hardware. Furthermore, embodiments maytake the form of a computer program product on at least onecomputer-readable storage medium having computer-readable programinstructions (e.g., computer software) embodied in the storage medium.Any suitable computer-readable storage medium may be utilized, includingnon-transitory hard disks, CD-ROMs, flash memory, optical storagedevices, magnetic storage devices, or the like.

Embodiments of the present invention have been described above withreference to block diagrams and flowchart illustrations of methods,apparatuses, systems and computer program products. It will beunderstood that each block of the circuit diagrams and processflowcharts, and combinations of blocks in the circuit diagrams andprocess flowcharts, respectively, can be implemented by various meansincluding computer program instructions. These computer programinstructions may be loaded onto a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the computer program product includes theinstructions which execute on the computer or other programmable dataprocessing apparatus create a means for implementing the functionsspecified in the flowchart block or blocks.

These computer program instructions may also be stored in acomputer-readable storage device that can direct a computer or otherprogrammable data processing apparatus to function in a particularmanner, such that the instructions stored in the computer-readablestorage device produce an article of manufacture includingcomputer-readable instructions for implementing the function discussedherein. The computer program instructions may also be loaded onto acomputer or other programmable data processing apparatus to cause aseries of operational steps to be performed on the computer or otherprogrammable apparatus, thereby producing a computer-implemented processsuch that the instructions executed on the computer or otherprogrammable apparatus cause performance of the steps and therebyimplement the functions discussed herein.

Accordingly, blocks of the block diagrams and flowchart illustrationssupport combinations of means for performing the specified functions,combinations of steps for performing the specified functions and programinstruction means for performing the specified functions. It will alsobe understood that each block of the circuit diagrams and processflowcharts, and combinations of blocks in the circuit diagrams andprocess flowcharts, can be implemented by special purpose hardware-basedcomputer systems that perform the specified functions or steps, orcombinations of special purpose hardware and computer instructions.

Many modifications and other embodiments of the inventions set forthherein will come to mind to one skilled in the art to which theseembodiments of the invention pertain having the benefit of the teachingspresented in the foregoing descriptions and the associated drawings.Therefore, it is to be understood that the embodiments of the inventionare not to be limited to the specific embodiments disclosed and thatmodifications and other embodiments are intended to be included withinthe scope of the appended claims. Although specific terms are employedherein, they are used in a generic and descriptive sense only and notfor purposes of limitation.

What is claimed is:
 1. An apparatus comprising a processor and a memory,the memory storing computer program code that, when executed by theprocessor, causes the apparatus to: determine, from a set of jobs, oneor more resource monitoring jobs to execute, wherein the one or moreresource monitoring jobs are configured to monitor the status ofresources within a distributed network; determine one or moreenvironments in which to run the one or more resource monitoring jobs,wherein the one or more environments are defined using one or moreenvironment variables; instantiate the one or more resource monitoringjobs with the one or more environment variables for the determined oneor more environments such that the one or more resource monitoring jobsare configured for operation in the determined one or more environments;and display, using a graphical user interface, a job environment matrixincluding a list of the set of jobs in conjunction with a running statusof each job of the set of jobs in each of one or more environments. 2.The apparatus of claim 1, wherein the computer program code, whenexecuted by the processor, further causes the apparatus to: receive,using the graphical user interface, instructions to run, stop, suspendrunning of, or resume running an instance of a job displayed in the jobenvironment matrix in an environment displayed in the job environmentmatrix; and start, stop, suspend, or resume an instance of the job basedon the received instructions.
 3. The apparatus of claim 1, wherein thecomputer program code, when executed by the processor, further causesthe apparatus to: display, using the graphical user interface, a jobcreation interface; receive, using the graphical user interface,abstract job parameters; create a new job based on the received abstractjob parameters; and store the new job in the memory.
 4. The apparatus ofclaim 1, wherein the computer program code, when executed by theprocessor, further causes the apparatus to: display, using the graphicaluser interface, a job editing interface, wherein the job editinginterface displays abstract job parameters of a selected job; receive,using the graphical user interface, instructions for updating theabstract job parameters of the selected job; update the selected jobbased on the received instructions; and store the updated job in thememory.
 5. The apparatus of claim 1, wherein the computer program code,when executed by the processor, further causes the apparatus to:display, using the graphical user interface, an environment creationinterface; receive, using the graphical user interface, an environmentvariable; create a new environment based on the received environmentvariable; and store the new environment in the memory.
 6. The apparatusof claim 1, wherein the computer program code, when executed by theprocessor, further causes the apparatus to: display, using the graphicaluser interface, an environment editing interface, wherein theenvironment editing interface displays parameters of a selectedenvironment; receive, using the graphical user interface, instructionsfor updating the parameters of the selected environment; update theselected environment based on the received instructions; and store theupdated environment in the memory.
 7. The apparatus of claim 1, whereinthe memory stores a domain having a list of jobs, a list ofenvironments, and permissions information, wherein the permissionsinformation indicates a list of users who may access the domain andaccess levels of the list of users.
 8. A method comprising: determining,from a set of jobs, one or more resource monitoring jobs to execute,wherein the one or more resource monitoring jobs are configured tomonitor the status of resources within a distributed network;determining one or more environments in which to run the one or moreresource monitoring jobs, wherein the one or more environments aredefined using one or more environment variables; instantiating, using aprocessor, the one or more resource monitoring jobs with the one or moreenvironment variables for the determined one or more environments suchthat the one or more resource monitoring jobs are configured foroperation in the determined one or more environments; and displaying,using a graphical user interface, a job environment matrix including alist of the set of jobs in conjunction with a running status of each jobof the set of jobs in each of one or more environments.
 9. The method ofclaim 8, further comprising: receiving, using the graphical userinterface, instructions to run, stop, suspend running of, or resumerunning an instance of a job displayed in the job environment matrix inan environment displayed in the job environment matrix; and starting,stopping, suspending, or resuming an instance of the job based on thereceived instructions.
 10. The method of claim 8, further comprising:displaying, using the graphical user interface, a job creationinterface; receiving, using the graphical user interface, abstract jobparameters; creating a new job based on the received abstract jobparameters; and storing the new job in the memory.
 11. The method ofclaim 8, further comprising: displaying, using the graphical userinterface, a job editing interface, wherein the job editing interfacedisplays abstract job parameters of a selected job; receiving, using thegraphical user interface, instructions for updating the abstract jobparameters of the selected job; updating the selected job based on thereceived instructions; and storing the updated job in a memory.
 12. Themethod of claim 8, further comprising: displaying, using the graphicaluser interface, an environment creation interface; receiving, using thegraphical user interface, an environment variable; creating a newenvironment based on the received environment variable; and storing thenew environment in the memory.
 13. The method of claim 8, furthercomprising: displaying, using the graphical user interface, anenvironment editing interface, wherein the environment editing interfacedisplays parameters of a selected environment; receiving, using thegraphical user interface, instructions for updating the parameters ofthe selected environment; updating the selected environment based on thereceived instructions; and storing the updated environment in thememory.
 14. The method of claim 8, further comprising storing, in amemory, a domain having a list of jobs, a list of environments, andpermissions information, wherein the permissions information indicates alist of users who may access the domain and access levels of the list ofusers.
 15. A computer program product comprising a non-transitorycomputer-readable storage medium storing computer program code that,when executed by an apparatus, causes the apparatus to: determine, froma set of jobs, one or more resource monitoring jobs to execute, whereinthe one or more resource monitoring jobs are configured to monitor thestatus of resources within a distributed network; determine one or moreenvironments in which to run the one or more resource monitoring jobs,wherein the one or more environments are defined using one or moreenvironment variables; instantiate the one or more resource monitoringjobs with the one or more environment variables for the determined oneor more environments such that the one or more resource monitoring jobsare configured for operation in the determined one or more environments;and display, using a graphical user interface, a job environment matrixincluding a list of the set of jobs in conjunction with a running statusof each job of the set of jobs in each of one or more environments. 16.The computer program product of claim 15, wherein the computer programcode, when executed by the apparatus, further causes the apparatus to:receive, using the graphical user interface, instructions to run, stop,suspend running of, or resume running an instance of a job displayed inthe job environment matrix in an environment displayed in the jobenvironment matrix; and start, stop, suspend, or resume an instance ofthe job based on the received instructions.
 17. The computer programproduct of claim 15, wherein the computer program code, when executed bythe apparatus, further causes the apparatus to: display, using thegraphical user interface, a job creation interface; receive, using thegraphical user interface, abstract job parameters; create a new jobbased on the received abstract job parameters; and store the new job inthe memory.
 18. The computer program product of claim 15, wherein thecomputer program code, when executed by the apparatus, further causesthe apparatus to: display, using the graphical user interface, a jobediting interface, wherein the job editing interface displays abstractjob parameters of a selected job; receive, using the graphical userinterface, instructions for updating the abstract job parameters of theselected job; update the selected job based on the receivedinstructions; and store the updated job in the memory.
 19. The computerprogram product of claim 15, wherein the computer program code, whenexecuted by the apparatus, further causes the apparatus to: display,using the graphical user interface, an environment creation interface;receive, using the graphical user interface, an environment variable;create a new environment based on the received environment variable; andstore the new environment in the memory.
 20. The computer programproduct of claim 15, wherein the computer program code, when executed bythe apparatus, further causes the apparatus to: display, using thegraphical user interface, an environment editing interface, wherein theenvironment editing interface displays parameters of a selectedenvironment; receive, using the graphical user interface, instructionsfor updating the parameters of the selected environment; update theselected environment based on the received instructions; and store theupdated environment in the memory.